/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.beans;

import com.util.Conectar;
import com.util.Utils;
import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//import java.util.ArrayList;
import javax.naming.NamingException;

/**
 *
 * @author victor
 */
public class NoticiaBean {
    private String idNoticia;
    private String titular;
    private String contenido;
    //private ArrayList imagenes;
    private String area; //id de la categoria a la que pertenece la noticia
    private String nick; //Nick del autor
    private String fechaAlta;
    private String fechaPublicacion;
    private String historica;
    private String imagen; //Nombre del archivo que se subio (en disco no es ese nombre)
    private String archivoImagen; //Nombre real de la imagen, ya que al subir los archivos se cambian de nombre
    private boolean encontrado;
    /**
     * Nombre del archivo real (lo que hay en disco), ya que el nombre del archivo
     * que se sube se cambia para no tener problamas con nombre repetidos.
     * @return
     */
    public String getArchivoImagen() {
        return archivoImagen;
    }
    /**
     * El nombre del archivo no llevará extension. El nombre del archivo no
     * es el mismo que el nombre del archivo que se subió ya al subirle
     * se renombra para no tener nombre repetidos.
     * @param archivoImagen Nobmre sin extension
     */
    public void setArchivoImagen(String archivoImagen) {
        this.archivoImagen = archivoImagen;
    }
    
    public String getArea() {
        if(area==null){
            return "";
        }
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    public String getContenido() {
        if(contenido==null){
            return "";
        }
        return contenido;
    }

    public void setContenido(String contenido) {
        this.contenido = contenido;
    }

    public String getFechaAlta() {
        if(fechaAlta==null){
            return null;
        }
        return fechaAlta;
    }

    public void setFechaAlta(String fechaAlta) {
        this.fechaAlta = fechaAlta;
    }

    public String getFechaPublicacion() {
        if(fechaPublicacion==null){
            return "";
        }
        return fechaPublicacion;
    }

    public void setFechaPublicacion(String fechaPublicacion) {
        this.fechaPublicacion = fechaPublicacion;
    }

    public String getIdNoticia() {
        if(idNoticia==null){
            return "";
        }
        return idNoticia;
    }

    public void setIdNoticia(String idNoticia) {
        this.idNoticia = idNoticia;
    }

    public String getImagen() {
        if(imagen==null){
            return "";
        }
        return imagen;
    }

    public void setImagen(String imagen) {
        this.imagen = imagen;
    }
    /**
     * Añade una imagen a la lista de imagenes de la noticia, pero no guarda nada en la BD.
     */
    /*
    public void añadirImagen(String name){
        if(imagenes==null){
            imagenes=new ArrayList();
        }
        this.imagenes.add(name);
    }
    */
    /*
    public ArrayList getImagenes() {
        return imagenes;
    }

    public void setImagenes(ArrayList imagenes) {
        this.imagenes = imagenes;
    }
    */
    
    public String getNick() {
        if(nick==null){
            return "";
        }
        return nick;
    }

    public void setNick(String nick) {
        this.nick = nick;
    }

    public String getTitular() {
        if(titular==null){
            return "";
        }
        return titular;
    }

    public void setTitular(String titular) {
        this.titular = titular;
    }

    public String getHistorica() {
        return historica;
    }

    public void setHistorica(String historica) {
        this.historica = historica;
    }

    public boolean isEncontrado() {
        return encontrado;
    }

    public void setEncontrado(boolean encontrado) {
        this.encontrado = encontrado;
    }

    /*
    public boolean crear(){
        Connection connection = null;
        PreparedStatement insertStatement = null;
        String insertStr = "INSERT INTO `noticias` (`titular`,`contenido`,`autor`,`fechaCreacion`,`fechaPublicacion`,`historica`,`idArea`,`imagen`,`archivoImagen`)"
                +" VALUES (?,?,?,?,?,?,?,?,?)";
        try {
            connection = Conectar.getConnection();
            insertStatement = connection.prepareStatement(insertStr);
            insertStatement.setString(1, titular);
            insertStatement.setString(2, contenido);
            insertStatement.setString(3, nick);
            insertStatement.setString(4, Utils.fechaParaMysql(fechaAlta));
            insertStatement.setString(5, Utils.fechaParaMysql(fechaPublicacion));
            insertStatement.setString(6, "NO");
            insertStatement.setString(7, area);
            insertStatement.setString(8, imagen);
            insertStatement.setString(9, archivoImagen);
            insertStatement.executeUpdate();
            insertStatement.close();
            //De guardar las imagenes en la base de datos se encarga el jsp.
                        
            connection.close();
            return true;
        }catch(Exception e){
            try {
                System.out.println(e.getMessage());
                connection.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            return false;
        }
    }

    /**
     * Carga los datos de una noticia en los respectivos campos de la clase.
     * @param id Id de la noticia que queremos consultar
     */
    /*
    public void consultaNoticia() {
        Connection conexion;
        try {
            conexion = Conectar.getConnection();
            System.out.println("Consultando "+this.idNoticia);
            String selectCustomerStr = "SELECT * FROM noticias " +
                    "WHERE idNoticia = ?";
            PreparedStatement selectStatement = null;
            selectStatement = (PreparedStatement) conexion.prepareStatement(selectCustomerStr);
            //System.out.println("Id en la consulta: " + id);
            selectStatement.setString(1, idNoticia);
            ResultSet rs = selectStatement.executeQuery();
            
            String aux = "";
            if (rs.next()) {
                this.setIdNoticia(idNoticia);
                this.setTitular(rs.getString("titular"));
                this.setContenido(rs.getString("contenido"));
                aux= Utils.fecha(rs.getString("fechaCreacion"));
                this.setFechaAlta(aux);
                aux= Utils.fecha(rs.getString("fechaPublicacion"));
                this.setFechaPublicacion(aux);
                this.setNick(rs.getString("autor"));
                this.setArea(rs.getString("idArea"));
                this.setHistorica(rs.getString("historica"));
                this.setImagen(rs.getString("imagen"));
                this.setArchivoImagen(rs.getString("archivoImagen"));
                setEncontrado(true);
            } else {
                setEncontrado(false);
            }
            rs.close();
            selectStatement.close();
            conexion.close();
            System.out.println("se ha ejecutado la consulta de noticia");
        } catch (NamingException ex) {
            ex.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    /*
    private ArrayList obtenerImagenes(){
        ArrayList lista=new ArrayList();
        Connection conexion;
        try {
            conexion = Conectar.getConnection();
            String selectCustomerStr = "SELECT * FROM imagenes " +
                    "WHERE idNoticia = ?";
            PreparedStatement selectStatement = null;
            selectStatement = (PreparedStatement) conexion.prepareStatement(selectCustomerStr);
            //System.out.println("Id en la consulta: " + id);
            selectStatement.setString(1, idNoticia);
            ResultSet rs = selectStatement.executeQuery();
            selectStatement.close();
            //String aux = "";
            while (rs.next()) {
                lista.add(rs.getString("nombre"));
            } 
            rs.close();
            conexion.close();
            //System.out.println("se ha ejecutado la consulta de noticia");
        } catch (NamingException ex) {
            ex.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return lista;
    }
    */
    /*
    public void eliminar() {
        Connection conexion;
        try {
            consultaNoticia(); //Primero cargamos los datos de la noticia a borrar
            //obtenerImagenes();
            //for(int i=0;i<this.imagenes.size();i++){
            //    this.borrarArchivo((String)imagenes.get(i));
            //}
            borrarArchivo(archivoImagen+".jpg");
            borrarArchivo(archivoImagen+"150x150.jpg");
            conexion = Conectar.getConnection();
            String updateSQL = "DELETE from noticias WHERE noticias.idNoticia = ?";

            PreparedStatement updateStatement = null;
            updateStatement = (PreparedStatement) conexion.prepareStatement(updateSQL);
            //System.out.println("Id en la actualizacion: " + idOferta);
            updateStatement.setString(1, idNoticia);
            updateStatement.executeUpdate();
            System.out.println(updateStatement.toString());
            updateStatement.close();
            conexion.close();
        } catch (NamingException ex) {
            ex.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    /**
     * Le pasamos el nombre de un archivo de una noticia y le borra 
     * fisicamente del disco.
     * @param name Nombre del archivo de imagen a borrar
     * @return true si se ha borrado, false si no se ha podido borrar.
     */
    /*
    public boolean borrarArchivo(String name) {
        String archivo = "/var/lib/tomcat5.5/webapps/archivos/imagenes/noticias/" + name;
        //String archivo="\\usr\\share\\tomcat5.5\\webapps\\archivos\\perfil\\index.gif";
        //String archivo=request.getParameter("archivo");
        System.out.println("Borrando archivo: " + archivo);
        File f = new File(archivo);
        if (f.delete()) {
            return true;
        } else {
            return false;
        }
    }
    /**
     * Pone como historica la noticia en la BD
     * @param estado Si va a true pone la noticia como historica, si es false
     * la saca del historico.
     */
    /*
    public void ponerHistorica(boolean estado) {
        Connection conexion;
        String sEstado;
        if(estado){
            sEstado="SI";
        }else{
            sEstado="NO";
        }
        try {
            conexion = Conectar.getConnection();
            String updateSQL = "UPDATE noticias SET " +
                    " historica=?  WHERE noticias.idNoticia = ?";

            PreparedStatement updateStatement = null;
            updateStatement = (PreparedStatement) conexion.prepareStatement(updateSQL);
            //System.out.println("Id en la actualizacion: " + idOferta);
            updateStatement.setString(1, sEstado);
            updateStatement.setString(2, idNoticia);
            updateStatement.executeUpdate();
            System.out.println(updateStatement.toString());
            updateStatement.close();
            conexion.close();
        } catch (NamingException ex) {
            ex.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    
    public boolean modificar() {
        Connection conexion;
        try {
            System.out.println("COntenido "+contenido);
            conexion = Conectar.getConnection();
            String updateSQL = "update noticias set titular=? ,contenido=?"+
                    " ,fechaPublicacion=?"+
                    ",idArea=? ";
            if(!this.getImagen().equalsIgnoreCase("")){
                updateSQL+=", imagen=? ,archivoImagen=? ";
            }
            updateSQL+="where idNoticia=?";
            PreparedStatement updateStatement = null;
            updateStatement = (PreparedStatement) conexion.prepareStatement(updateSQL);
            updateStatement.setString(1, titular);
            updateStatement.setString(2, contenido);
            updateStatement.setString(3, Utils.fechaParaMysql(this.fechaPublicacion));
            updateStatement.setString(4, area);
            if(this.getImagen().equalsIgnoreCase("")){
                updateStatement.setString(5, idNoticia);
                System.out.println("con 5");
            }else{
                System.out.println("con 7");
                updateStatement.setString(5, imagen);
                updateStatement.setString(6, archivoImagen);
                updateStatement.setString(7, idNoticia);
            }
            System.out.println("sentencia: " + updateStatement.toString());
            updateStatement.executeUpdate();
            updateStatement.close();
            conexion.close();
            System.out.println("Modificada la noticia");
            return true;
        } catch (NamingException ex) {
            ex.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        System.out.println("No se ha modificado la noticia");
        return false;
    }
     
     */
    
}
